/*********************************************** * Ajax Includes script- © Dynamic Drive DHTML code library (www.dynamicdrive.com) * This notice MUST stay intact for legal use * Modified by The Group * Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code ***********************************************/ //To include a page, invoke ajaxinclude("afile.htm") in the BODY of page //Included file MUST be from the same domain as the page displaying it. var rootdomain="http://"+window.location.hostname function ajaxinclude(url,id) { var page_request = false if (window.XMLHttpRequest) // if Mozilla, Safari etc page_request = new XMLHttpRequest() else if (window.ActiveXObject){ // if IE try { page_request = new ActiveXObject("Msxml2.XMLHTTP") } catch (e){ try{ page_request = new ActiveXObject("Microsoft.XMLHTTP") } catch (e){} } } else return false page_request.open('GET', url, false) //get page synchronously page_request.send(null) writecontent(page_request,id) } function writecontent(page_request,id){ if (window.location.href.indexOf("http")==-1 || page_request.status==200) document.getElementById(id).innerHTML = page_request.responseText //document.write(page_request.responseText) } /** * -------------------------------------------------------------------- * jQuery-Plugin "pngFix" * Version: 1.2, 09.03.2009 * by Andreas Eberhard, andreas.eberhard@gmail.com * http://jquery.andreaseberhard.de/ * * Copyright (c) 2007 Andreas Eberhard * Licensed under GPL (http://www.opensource.org/licenses/gpl-license.php) * * Changelog: * 09.03.2009 Version 1.2 * - Update for jQuery 1.3.x, removed @ from selectors * 11.09.2007 Version 1.1 * - removed noConflict * - added png-support for input type=image * - 01.08.2007 CSS background-image support extension added by Scott Jehl, scott@filamentgroup.com, http://www.filamentgroup.com * 31.05.2007 initial Version 1.0 * -------------------------------------------------------------------- * @example $(function(){$(document).pngFix();}); * @desc Fixes all PNG's in the document on document.ready * * jQuery(function(){jQuery(document).pngFix();}); * @desc Fixes all PNG's in the document on document.ready when using noConflict * * @example $(function(){$('div.examples').pngFix();}); * @desc Fixes all PNG's within div with class examples * * @example $(function(){$('div.examples').pngFix( { blankgif:'ext.gif' } );}); * @desc Fixes all PNG's within div with class examples, provides blank gif for input with png * -------------------------------------------------------------------- */ (function($) { jQuery.fn.pngFix = function(settings) { // Settings settings = jQuery.extend({ blankgif: 'blank.gif' }, settings); var ie55 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 5.5") != -1); var ie6 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 6.0") != -1); if (jQuery.browser.msie && (ie55 || ie6)) { //fix images with png-source jQuery(this).find("img[src$=.png]").each(function() { jQuery(this).attr('width',jQuery(this).width()); jQuery(this).attr('height',jQuery(this).height()); var prevStyle = ''; var strNewHTML = ''; var imgId = (jQuery(this).attr('id')) ? 'id="' + jQuery(this).attr('id') + '" ' : ''; var imgClass = (jQuery(this).attr('class')) ? 'class="' + jQuery(this).attr('class') + '" ' : ''; var imgTitle = (jQuery(this).attr('title')) ? 'title="' + jQuery(this).attr('title') + '" ' : ''; var imgAlt = (jQuery(this).attr('alt')) ? 'alt="' + jQuery(this).attr('alt') + '" ' : ''; var imgAlign = (jQuery(this).attr('align')) ? 'float:' + jQuery(this).attr('align') + ';' : ''; var imgHand = (jQuery(this).parent().attr('href')) ? 'cursor:hand;' : ''; if (this.style.border) { prevStyle += 'border:'+this.style.border+';'; this.style.border = ''; } if (this.style.padding) { prevStyle += 'padding:'+this.style.padding+';'; this.style.padding = ''; } if (this.style.margin) { prevStyle += 'margin:'+this.style.margin+';'; this.style.margin = ''; } var imgStyle = (this.style.cssText); strNewHTML += ''; if (prevStyle != ''){ strNewHTML = '' + strNewHTML + ''; } jQuery(this).hide(); jQuery(this).after(strNewHTML); }); // fix css background pngs jQuery(this).find("*").each(function(){ var bgIMG = jQuery(this).css('background-image'); if(bgIMG.indexOf(".png")!=-1){ var iebg = bgIMG.split('url("')[1].split('")')[0]; jQuery(this).css('background-image', 'none'); jQuery(this).get(0).runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + iebg + "',sizingMethod='scale')"; } }); //fix input with png-source jQuery(this).find("input[src$=.png]").each(function() { var bgIMG = jQuery(this).attr('src'); jQuery(this).get(0).runtimeStyle.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader' + '(src=\'' + bgIMG + '\', sizingMethod=\'scale\');'; jQuery(this).attr('src', settings.blankgif) }); } return jQuery; }; })(jQuery); /** * jQuery.query - Query String Modification and Creation for jQuery * Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com) * Licensed under the WTFPL (http://sam.zoy.org/wtfpl/). * Date: 2009/8/13 * * @author Blair Mitchelmore * @version 2.1.7 * **/ new function(settings) { // Various Settings var $separator = settings.separator || '&'; var $spaces = settings.spaces === false ? false : true; var $suffix = settings.suffix === false ? '' : '[]'; var $prefix = settings.prefix === false ? false : true; var $hash = $prefix ? settings.hash === true ? "#" : "?" : ""; var $numbers = settings.numbers === false ? false : true; jQuery.query = new function() { var is = function(o, t) { return o != undefined && o !== null && (!!t ? o.constructor == t : true); }; var parse = function(path) { var m, rx = /\[([^[]*)\]/g, match = /^([^[]+)(\[.*\])?$/.exec(path), base = match[1], tokens = []; while (m = rx.exec(match[2])) tokens.push(m[1]); return [base, tokens]; }; var set = function(target, tokens, value) { var o, token = tokens.shift(); if (typeof target != 'object') target = null; if (token === "") { if (!target) target = []; if (is(target, Array)) { target.push(tokens.length == 0 ? value : set(null, tokens.slice(0), value)); } else if (is(target, Object)) { var i = 0; while (target[i++] != null); target[--i] = tokens.length == 0 ? value : set(target[i], tokens.slice(0), value); } else { target = []; target.push(tokens.length == 0 ? value : set(null, tokens.slice(0), value)); } } else if (token && token.match(/^\s*[0-9]+\s*$/)) { var index = parseInt(token, 10); if (!target) target = []; target[index] = tokens.length == 0 ? value : set(target[index], tokens.slice(0), value); } else if (token) { var index = token.replace(/^\s*|\s*$/g, ""); if (!target) target = {}; if (is(target, Array)) { var temp = {}; for (var i = 0; i < target.length; ++i) { temp[i] = target[i]; } target = temp; } target[index] = tokens.length == 0 ? value : set(target[index], tokens.slice(0), value); } else { return value; } return target; }; var queryObject = function(a) { var self = this; self.keys = {}; if (a.queryObject) { jQuery.each(a.get(), function(key, val) { self.SET(key, val); }); } else { jQuery.each(arguments, function() { var q = "" + this; q = q.replace(/^[?#]/,''); // remove any leading ? || # q = q.replace(/[;&]$/,''); // remove any trailing & || ; if ($spaces) q = q.replace(/[+]/g,' '); // replace +'s with spaces jQuery.each(q.split(/[&;]/), function(){ var key = decodeURIComponent(this.split('=')[0] || ""); var val = decodeURIComponent(this.split('=')[1] || ""); if (!key) return; if ($numbers) { if (/^[+-]?[0-9]+\.[0-9]*$/.test(val)) // simple float regex val = parseFloat(val); else if (/^[+-]?[0-9]+$/.test(val)) // simple int regex val = parseInt(val, 10); } val = (!val && val !== 0) ? true : val; if (val !== false && val !== true && typeof val != 'number') val = val; self.SET(key, val); }); }); } return self; }; queryObject.prototype = { queryObject: true, has: function(key, type) { var value = this.get(key); return is(value, type); }, GET: function(key) { if (!is(key)) return this.keys; var parsed = parse(key), base = parsed[0], tokens = parsed[1]; var target = this.keys[base]; while (target != null && tokens.length != 0) { target = target[tokens.shift()]; } return typeof target == 'number' ? target : target || ""; }, get: function(key) { var target = this.GET(key); if (is(target, Object)) return jQuery.extend(true, {}, target); else if (is(target, Array)) return target.slice(0); return target; }, SET: function(key, val) { var value = !is(val) ? null : val; var parsed = parse(key), base = parsed[0], tokens = parsed[1]; var target = this.keys[base]; this.keys[base] = set(target, tokens.slice(0), value); return this; }, set: function(key, val) { return this.copy().SET(key, val); }, REMOVE: function(key) { return this.SET(key, null).COMPACT(); }, remove: function(key) { return this.copy().REMOVE(key); }, EMPTY: function() { var self = this; jQuery.each(self.keys, function(key, value) { delete self.keys[key]; }); return self; }, load: function(url) { var hash = url.replace(/^.*?[#](.+?)(?:\?.+)?$/, "$1"); var search = url.replace(/^.*?[?](.+?)(?:#.+)?$/, "$1"); return new queryObject(url.length == search.length ? '' : search, url.length == hash.length ? '' : hash); }, empty: function() { return this.copy().EMPTY(); }, copy: function() { return new queryObject(this); }, COMPACT: function() { function build(orig) { var obj = typeof orig == "object" ? is(orig, Array) ? [] : {} : orig; if (typeof orig == 'object') { function add(o, key, value) { if (is(o, Array)) o.push(value); else o[key] = value; } jQuery.each(orig, function(key, value) { if (!is(value)) return true; add(obj, key, build(value)); }); } return obj; } this.keys = build(this.keys); return this; }, compact: function() { return this.copy().COMPACT(); }, toString: function() { var i = 0, queryString = [], chunks = [], self = this; var encode = function(str) { str = str + ""; if ($spaces) str = str.replace(/ /g, "+"); return encodeURIComponent(str); }; var addFields = function(arr, key, value) { if (!is(value) || value === false) return; var o = [encode(key)]; if (value !== true) { o.push("="); o.push(encode(value)); } arr.push(o.join("")); }; var build = function(obj, base) { var newKey = function(key) { return !base || base == "" ? [key].join("") : [base, "[", key, "]"].join(""); }; jQuery.each(obj, function(key, value) { if (typeof value == 'object') build(value, newKey(key)); else addFields(chunks, newKey(key), value); }); }; build(this.keys); if (chunks.length > 0) queryString.push($hash); queryString.push(chunks.join($separator)); return queryString.join(""); } }; return new queryObject(location.search, location.hash); }; }(jQuery.query || {}); (function($) { jQuery.fn.curvedModules = function(settings) { settings = jQuery.extend({ cornerimage: "gradient" }, settings); if (jQuery.browser.msie) { var ieversion = parseInt($.browser.version, 10); if (ieversion < 9) { jQuery(this).each(function(){ var cornerimage,elementWidth,elementHeight; if((jQuery(this).hasClass("module_greygradient"))||(jQuery(this).hasClass("module_outline"))){ cornerimage = "default"; elementWidth = jQuery(this).outerWidth()-5; elementHeight = jQuery(this).outerHeight()-5; sizedifferential = -1; }else{ cornerimage = "gradient"; elementWidth = jQuery(this).outerWidth()-4; elementHeight = jQuery(this).outerHeight()-4; sizedifferential = 0; } jQuery(this).addClass("module") .append("
 
") .append("
 
") .append("
 
") .append("
 
"); jQuery(this).find("div.topleft").css({"background-image":"url(\"images/site_objects/iecorners/topleft_"+cornerimage+".png\")","top":sizedifferential+"px","left":sizedifferential+"px"}); jQuery(this).find("div.topright").css({"background-image":"url(\"images/site_objects/iecorners/topright_"+cornerimage+".png\")","top":sizedifferential+"px","left":elementWidth+"px"}); if(!(jQuery(this).hasClass("module_twitter"))){ jQuery(this).find("div.bottomleft").css({"background-image":"url(\"images/site_objects/iecorners/bottomleft_"+cornerimage+".png\")","top":elementHeight+"px","left":sizedifferential+"px"}); jQuery(this).find("div.bottomright").css({"background-image":"url(\"images/site_objects/iecorners/bottomright_"+cornerimage+".png\")","top":elementHeight+"px","left":elementWidth+"px"}); } //if(jQuery(this).hasClass("module_greengradient")){ // alert(jQuery(this).attr("class") + " // " + cornerimage); // alert(jQuery(this).find("div.bottomright").css("background-image")); //} jQuery(this).pngFix(); }); } } return jQuery; }; })(jQuery); (function($) { jQuery.fn.curvedMenus = function(settings) { if (jQuery.browser.msie) { var ieversion = parseInt($.browser.version, 10); if (ieversion < 9) { jQuery(this).each(function(){ var cornerimage,elementWidth,elementHeight; if(jQuery(this).hasClass("tabs")){ elementWidth = jQuery(this).find("li").find("a.lit").outerWidth()-4; elementHeight = jQuery(this).find("li").find("a.lit").outerHeight(); jQuery(this).find("li").find("a.lit").addClass("iefix") .append(" ") .append(" "); jQuery(this).find("li").find("a.lit").find("span.topleft").css({"background-image":"url(\"images/site_objects/iecorners/topleft_tabs.png\")","top":"0px","left":"0px"}); jQuery(this).find("li").find("a.lit").find("span.topright").css({"background-image":"url(\"images/site_objects/iecorners/topright_tabs.png\")","top":"0px","left":elementWidth+"px"}); }else{ elementWidth = jQuery(this).find("li").find("a.lit").outerWidth()-4; elementHeight = jQuery(this).find("li").find("a.lit").outerHeight()-4; jQuery(this).find("li").find("a.lit").addClass("iefix") .append(" ") .append(" "); jQuery(this).find("li").find("a.lit").find("span.bottomleft").css({"background-image":"url(\"images/site_objects/iecorners/bottomleft_tabs.png\")","top":elementHeight+"px","left":"0px"}); jQuery(this).find("li").find("a.lit").find("span.bottomright").css({"background-image":"url(\"images/site_objects/iecorners/bottomright_tabs.png\")","top":elementHeight+"px","left":elementWidth+"px"}); } jQuery(this).pngFix(); }); } } return jQuery; }; })(jQuery); $(document).ready(function () { //HTML DOM document is ready // BUTTON FIX $("button[type=submit]").live('mouseover focus', function(event) { $(this).css("text-decoration","underline"); $(this).css("color","#004FB6"); }).live('mouseout blur', function(event) { $(this).css("text-decoration","none"); $(this).css("color","#004FB6"); }); // ROLLOVERS $("a.roll").live('mouseover focus', function(event) { $(this).find("img").attr("src", $(this).find("img").attr("src").split("_f1").join("_f2")) }).live('mouseout blur', function(event) { $(this).find("img").attr("src", $(this).find('img').attr("src").split("_f2").join("_f1")) }); // PNG TRANSPARENCY FIX $("img[src$=.png]").each(function(){ jQuery(this).parent().pngFix(); }); // REL=EXTERNAL function externalLinks(){ $("a[rel=external]").attr("target","_blank").each(function(n) { if($(this).attr("title").indexOf("Opens in a new browser window.")<0){ $(this).attr("title") !='' ? this.title=$(this).attr("title")+'. Opens in a new browser window.' : this.title='Opens in a new browser window.'; } }); } externalLinks(); jQuery("ul.tabs, ul.hangingtabs").curvedMenus(); jQuery(".module_1, .module_2, .module_3, .module_4").curvedModules(); //IE6,7,8 fix for curved corners if (jQuery.browser.msie) { if(parseInt(jQuery.browser.version) != 9) { $("ul.filters li a, ul.newsandviewstabs li, ul.newsandviewstabs li a, .filter, .searchcontainerform form input#newsandviews_search_criteria, .searchcontainerform form input.search_submit, .searchcontainerform form select#newsandviews_search_author, .businessform form input.search_submit, .businessform form select#newsandviews_search_author, ul.filter_tabs li a, input.bluebutton, .grid_2 .container_bottom, .grid_2 .container_top, .featureposition").each(function () { $(this).css("behavior","url(script/css3pie/PIE.htc)"); }); }; }; }); // ----------------------------------- // ----------------------------------- // ----------------------------------- // --- PORTED FROM OLD SCRIPT FILE --- // ----------------------------------- // ----------------------------------- // ----------------------------------- // ------------------------- // --- FORM BUTTON ROLLOVERS // ------------------------- function highlight(element){ element.className = 'button_f2';} function restore(element){ element.className = 'button';} function highlight_crisis(element){ element.className = 'crisis_button_f2';} function restore_crisis(element){ element.className = 'crisis_button';} // --------------------------- // --- ACCESSIBLE POPUP WINDOW // --------------------------- var _POPUP_FEATURES = 'location=0,statusbar=0,menubar=0,width=750,height=570'; function raw_popup(url, target, features){ if (features==""){ theFeatures = _POPUP_FEATURES; }else{ theFeatures = features } var theWindow = window.open(url, target, theFeatures); theWindow.focus(); return theWindow; } function link_popup(src, target, features) { return raw_popup(src, target, features); } // ----------------------- // --- KEYPRESS VALIDATION // ----------------------- function verifyKey(oElement,oEvent){ if(oEvent.keyCode==13 && oElement.onclick){oEvent();} } // -------------------- // --- ANCIENT ROLLOVER // -------------------- function MM_swapImgRestore() { //v3.0 var i,x,a=document.MM_sr; for(i=0;a&&i0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);/* BRAND SCROLL - V2 REWRITTEN FOR JQUERY 11-01-11 (WAS MOOTOOLS) - PH, 11-01-11 */ jQuery(document).ready(function () { var activeitem = 0; var brandarray = jQuery("#brandscroller").find("div[id!='']").map(function(){return this.id;}).get(); jQuery("#brandslideshownavigation").find("ul.brandnav").find("a").bind("click", function() { var direction = jQuery(this).attr("id"); if(direction=="previous"){ activeitem = activeitem-1; if(activeitem<0){activeitem = ((brandarray.length)-1)}; }else{ activeitem = activeitem+1; if(activeitem==(brandarray.length)){activeitem = 0}; } var selecteditem = brandarray[activeitem]; var selecteditemshort = selecteditem.replace("brand_",""); slideToSelected(selecteditem,selecteditemshort); return false }); jQuery("#brandslideshownavigation").find("ul.individualbrands").find("a").bind("click", function() { var selecteditemshort = jQuery(this).attr("id"); var selecteditem = "brand_"+selecteditemshort; slideToSelected(selecteditem,selecteditemshort); return false }); function slideToSelected(selecteditem,selecteditemshort){ jQuery("#brandcontainer").scrollTo( jQuery("#"+selecteditem),1000); jQuery("#brandslideshownavigation").find("ul.individualbrands").find("a").removeClass("lit"); jQuery("#brandslideshownavigation").find("ul.individualbrands").find("a[id="+selecteditemshort+"]").addClass("lit"); s.tl(true,'o','Slide panel : Brand scroller : ' + selecteditemshort); } });jQuery(document).ready(function () { jQuery("#centricaviews_feature").addClass("blog_bg"); jQuery("#centricaviews_feature .featurenavigation ul.feature_buttons li a").live("click", function(event) { var strView=this.href.split("view=") strView=strView[1].split("&") strView=strView[0] //update nav jQuery("#centricaviews_feature .featurenavigation").load("managed_content/modules/centricaviews/centricaviews_featurepanel.asp?pageid=1&view="+strView+" ul.feature_buttons") //update content: fade out old, fade in new jQuery("#centricaviews_feature .featurecontent .content").fadeOut("fast",loadContent); function loadContent() {jQuery("#centricaviews_feature .featurecontent").load("managed_content/modules/centricaviews/centricaviews_featurepanel.asp?pageid=1&view="+strView+" .content",'',showNewContent)} function showNewContent() {jQuery("#centricaviews_feature .featurecontent .content").fadeIn("fast",function(){ $("#centricaviews_feature a[rel=external]").attr("target","_blank").each(function(n) { if($(this).attr("title").indexOf("Opens in a new browser window.")<0){ $(this).attr("title") !='' ? this.title=$(this).attr("title")+'. Opens in a new browser window.' : this.title='Opens in a new browser window.'; } }); });} //update panel backgrounds if (strView == 'blog') { jQuery('#centricaviews_feature').removeClass('webchat_bg'); jQuery('#centricaviews_feature').removeClass('energydebate_bg'); jQuery('#centricaviews_feature').removeClass('video_bg'); jQuery('#centricaviews_feature').addClass('blog_bg'); } if (strView == 'video') { jQuery('#centricaviews_feature').removeClass('blog_bg'); jQuery('#centricaviews_feature').removeClass('webchat_bg'); jQuery('#centricaviews_feature').removeClass('energydebate_bg'); jQuery('#centricaviews_feature').addClass('video_bg'); } if (strView == 'webchat') { jQuery('#centricaviews_feature').removeClass('blog_bg'); jQuery('#centricaviews_feature').removeClass('video_bg'); jQuery('#centricaviews_feature').removeClass('energydebate_bg'); jQuery('#centricaviews_feature').addClass('webchat_bg'); } if (strView == 'energydebate') { jQuery('#centricaviews_feature').removeClass('blog_bg'); jQuery('#centricaviews_feature').removeClass('video_bg'); jQuery('#centricaviews_feature').removeClass('webchat_bg'); jQuery('#centricaviews_feature').addClass('energydebate_bg'); } //metrics starts s.tl(true,'o','Centrica Homepage views hotspot: '+strView); //metrics ends return false; }); });